package cn.wolfcode.luowowo.member.service;

import cn.wolfcode.luowowo.common.exception.LogicException;
import cn.wolfcode.luowowo.member.domain.UserInfo;
import cn.wolfcode.luowowo.member.vo.UserInfoVo;

import java.math.BigDecimal;
import java.util.List;

public interface IUserInfoService {
    UserInfo get(Long id);
    Boolean checkPhone(String phone);

    void sendVerifyCode(String phone);
    //如果不抛出业务异常，dubbo会自动把异常包装为RuntimeException
    void userRegist(String phone, String nickname, String password, String rpassword, String verifyCode) throws LogicException;

    String userLogin(String username, String password);

    List<UserInfo> list();

    /**
     * 我的关注,通过该用户id去获取我的关注的用户信息
     * @param userInfoId=登录用户id
     * @return
     */
    List<UserInfo> getFocusedUserInfo(Long userInfoId);

    /**
     * 查询出我关注的人的数量
     * @param userInfoId=登录用户id
     * @return
     */
    int getFocusedUserInfoCountById(Long userInfoId);
    /**
     * 查询出我的粉丝数量
     * @param userInfoId=登录用户id
     * @return
     */
    int getFansUserInfoCountById(Long userInfoId);
    /**
     * 查询出我的蜂蜜数量
     * @param userInfoId=登录用户id
     * @return
     */
    int getHoneyCountById(Long userInfoId);

    /**
     * 个人中心 修改用户资料 我的信息
     * @param userInfo=当前登录的用户
     * @param userInfoVo=(我把前端传进入的数据封装到了userInfoVo里面)
     */
    void setUserInfoDataUp(UserInfo userInfo,UserInfoVo userInfoVo);

    void setUserInfoData(UserInfo userInfo,UserInfoVo user);

    BigDecimal queryForScore(Long userId);

    void payForItem(Long userId, BigDecimal price);
}
